package br.visao;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

import br.modelo.Cidade;
import br.modelo.Secao;
import br.modelo.Zona;
import br.rn.CidadeRN;
import br.rn.SecaoRN;
import br.rn.ZonaRN;
import br.util.Mensagem;


@ManagedBean
@RequestScoped
public class SecaoBean {
	private Secao secaoSelecionada;
	private List<SelectItem> cidadeSelect;
	private List<SelectItem> zonaSelect;
	private List<Cidade> listaCidades;
	private List<Zona> listaZonas;
	private List<Secao> listaSecoes;
	private Mensagem mensagem;
	private SecaoRN secaoRN;
	private CidadeRN cidadeRN;
	private ZonaRN zonaRN;
	public SecaoBean() {
	}

	@PostConstruct
	public void setUp() {
		cidadeSelect = null;
		listaCidades = null;
		listaZonas = null;
		listaSecoes = null;
		secaoSelecionada = new Secao();
		mensagem = new Mensagem();
		secaoRN = new SecaoRN();
		zonaRN = new ZonaRN();
		cidadeRN = new CidadeRN();
	}

	public void salvar() {
	
		if (secaoSelecionada.getCidade() == null || secaoSelecionada.getZona() == null || secaoSelecionada.getZona().getZona() == null) {
			mensagem.msgPreencheCampos();
		}else{
			secaoSelecionada.setCidade(secaoSelecionada.getCidade());
			secaoSelecionada.setZona(secaoSelecionada.getZona());
			secaoRN.salvar(secaoSelecionada);
			mensagem.msgDadosInseridos();
		}
		
	}

	public List<SelectItem> getCidadeSelect() {
		if (this.cidadeSelect == null){
			cidadeSelect = new ArrayList<SelectItem>();
			listaCidades = cidadeRN.listar();
			if(listaCidades != null && !listaCidades.isEmpty()){
				SelectItem item;
					for (Cidade cidadesLista : listaCidades) {
					item = new SelectItem(cidadesLista, cidadesLista.getNome());
					cidadeSelect.add(item);
				}
			}
		}
		return cidadeSelect;
	}


	
	public List<SelectItem> getZonaSelect() {
		if (this.zonaSelect == null){
			zonaSelect = new ArrayList<SelectItem>();
			
			if( secaoSelecionada.getCidade() == null ||secaoSelecionada.getCidade().getNome() == null || secaoSelecionada.getCidade().getNome() == ""){
				listaZonas = zonaRN.listar();
			}else{
				listaZonas = zonaRN.listarPorCidade(secaoSelecionada.getCidade());
			}
			
			if(listaZonas != null && !listaZonas.isEmpty()){
				SelectItem item;
				for (Zona zonasLista : listaZonas){
					item = new SelectItem(zonasLista, Integer.toString(zonasLista.getZona()));
					zonaSelect.add(item);
				}
			}
		}
		
		return zonaSelect;
	}

	public List<Cidade> getListaCidades() {
		return listaCidades;
	}

	public List<Zona> getListaZonas() {
		listaZonas = zonaRN.listar();
		return listaZonas;
	}

	public Secao getSecaoSelecionada() {
		return secaoSelecionada;
	}

	public void setSecaoSelecionada(Secao secaoSelecionada) {
		this.secaoSelecionada = secaoSelecionada;
	}

	public List<Secao> getListaSecoes() {
		listaSecoes = secaoRN.listar();
		return listaSecoes;
	}

	
		

	
}



